/*******************************************
  Jose Andres Lara Vecino

  Author       : $Author: cainlara@gmail.com $
  Last CheckIn : $Date: 2012-06-30 16:06:26 +0000 (Sat, 30 Jun 2012) $
  Revision     : $Revision: 98 $
*******************************************/

package gui.imagen;

import java.awt.Image;
import java.io.Serializable;
import java.net.URL;
import java.util.ResourceBundle;

import javax.swing.ImageIcon;

/**
 * Administra las imagenes mostradas al usuario.
 * <P>
 * Esta clase es la encargada de administrar la 
 * generacion de iconos e imaganes incrustadas en 
 * el GUI.
 * 
 * @author jose.lara 07.06.2012
 */
public final class Imagen implements Serializable {
    private static final long serialVersionUID = -4840603787967488287L;
    
    private static final String NOMBRE_CATALOGO     = "gui.imagen.imagenes";
    private static volatile ResourceBundle catalogo = null;
    
    private Imagen() {
        //Imposible instanciar
    }
    
    public static Image getImagen(String llave) {
        return getIcono(llave).getImage();
    }
    
    public static ImageIcon getIcono(String llave) {
        ImageIcon icono     = null;
        URL urlImagen       = null;
        
        urlImagen = getURLImagen(llave);
        
        if(urlImagen != null) {
            icono = new ImageIcon(urlImagen);
        }
        
        return icono;
    }
    
    public static URL getURLImagen(String llave) {
        URL urlImagen       = null;
        String rutaArchivo  = null;
        
        rutaArchivo = getRuta(llave);
        
        if(rutaArchivo != null) {
          urlImagen = Imagen.class.getResource(rutaArchivo.trim());
        }
        
        return urlImagen;
    }
    
    private static String getRuta(String llave) {
        String ruta = null;
        
        ruta = getCatalogo().getString(llave);
        
        return ruta;
    }
    
    private static ResourceBundle getCatalogo() {
        if(catalogo == null) {
            catalogo = ResourceBundle.getBundle(NOMBRE_CATALOGO);
        }
        return catalogo;
    }
}